package br.com.threads.entendendo;

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JPanel;

/**
 * Objetivo: Criar os objetos Carro e movimentar os mesmos. 
 * @author Sidney
 *
 */
public class Carro extends Thread{
	private JPanel janela;//Janela principal
	private static final int TAMANHOX = 40;//tamanho do carro eixo x
	private static final int TAMANHOY = 40;//tamanho do carro eixo y
	private static final int PARAR_LESTEOESTE= 180;//ponto de parada da esquerda para a direita
	private static final int PARAR_OESTELESTE = 420;//ponto de parada da direita para a esquerda
	private static final int PARAR_SULNORTE= 94;//ponto de parada do sul para o norte
	private static final int PARAR_NORTESUL = 310;//ponto de parada do norte para o sul
	
	//constante que define a direcao que o carro percorre na pista
	public static final int EIXOX = 1;
	public static final int EIXOY = 0;
	
	//constante 0 do aplicativo
	public static final int ZERO = 0;
	
	//sentido dos carros na pista
	public static final int LESTE_OESTEX= 0;
	public static final int OESTE_LESTEX = 1;
	public static final int NORTE_SULY = 2;
	public static final int SUL_NORTEY = 3;
	
	//atributo do eixo do carro que pode ser x (LESTE_OESTE,OESTE_LESTE) E Y
	//(NORTE_SUL, SUL_NORTE	
	private int eixo;
	
	//atributo que define a direcao do carro
	private int sentido;
	
	//posicao do carro durante a sua trajetoria
	private int x;
	private int y;
	
	//posicao inicial do carro na tela
	private int iniX;
	private int iniY;
	
	//velocidade em que o carrro percorre na tela o atributo dX decrementa de x
	//e o atributo dY decrementa de y
	private int dx = 2;
	private int dy = 2;
	
	//cor do carro
	private Color color;
	
	//atributo cruzamento, para verificar o estado do semaforo
	private Cruzamento cruzamento;
	
	//metodo construtor da classe
	public Carro(JPanel b_, Color c_, int eixo_, int x_, int y_, int sentido_,
			Cruzamento cruzamento_){
		this.janela = b_;
		this.color = c_;
		this.eixo = eixo_;
		this.x = x_;
		this.y = y_;
		this.sentido = sentido_;
		this.cruzamento = cruzamento_;
	}
	//metodo que cria graficamente o carro e adiciona na tela
	public void draw(){
		Graphics g = janela.getGraphics();
		g.setColor(color);
		g.fillRect(x, y, TAMANHOX, TAMANHOY);
		g.dispose();
	}
	//metodo responsavel pela movimentacao doo carro na tela
	public void move(){
		if(!janela.isVisible())return;
		Graphics g = this.janela.getGraphics();
		g.setXORMode(color);
		g.fillRect(this.x, this.y, this.TAMANHOX, this.TAMANHOY);
	}
	
}
